package com.sgb.goods.utils;

import androidx.databinding.ObservableField;

import java.io.File;
import java.math.BigDecimal;

/**
 * StringUtils
 * @author cyj
 */
public class StringUtils {

    /**
     * 替换分隔符
     * @param str    为空则替换
     * @return
     */
    public static String replaceSeparator(String str) {
        return isEmpty(str) ? File.separator : str;
    }

    /**
     * 是否为空校验
     * @param str
     * @return
     */
    public static boolean isEmpty(String str) {
        return null == str || "".equals(str.trim());
    }

    /**
     * ObservableField<String> 是否为空校验
     * @param observableField
     * @return
     */
    public static boolean isEmpty(ObservableField<String> observableField) {
        return null == observableField || isEmpty(observableField.get());
    }

    /**
     * String空对象为字符串
     * @param     str  str
     * @return    String
     */
    public static String convertEmptyForStr(String str) {
        return isEmpty(str) ? "" : str;
    }

    /**
     * 转换ObservableField<String>空对象为字符串
     * @param     observableField  a
     * @return    String
     */
    public static String convertEmptyForStr(ObservableField<String> observableField) {
        return null == observableField || "".equals(observableField.get()) ? "" : observableField.get();
    }

    /**
     * Number 是否为空转换
     * @param number    Number
     * @return    Number
     */
    public static Number convertForNumber(Number number) {
        return null == number ? 0 : number;
    }

    /**
     * String 转换 BigDecimal
     * @param str    String
     * @return    BigDecimal
     */
    public static BigDecimal convertStrToBD(String str) {
        try {
            return new BigDecimal(null == str || str.trim().length() == 0 ? "0" : str);
        } catch (Throwable e) {
            e.printStackTrace();
        }
        return BigDecimal.valueOf(0);
    }

    /**
     * String 转换 BigDecimal 并向上四舍五入保留位数
     * @param str    String
     * @param bitNumber    位数，比如传2表示四舍五入并格式化后保留小数点后2位
     * @return    BigDecimal
     */
    public static BigDecimal convertStrToBDBit(String str, int bitNumber) {
        if(bitNumber <= 0) {
            return convertStrToBD(str);
        }
        return convertStrToBD(str).setScale(bitNumber, BigDecimal.ROUND_HALF_UP);
    }
}
